package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import model.Psicologo;

public class PsicologoDAO {
	
	private Connection conexao;
	private Statement st;
	private ResultSet rs;
	Adaptador adaptador = new Adaptador();
	
	public Psicologo isUsuarioValido(String matricula, String senha) throws SQLException{
		Psicologo psicologo = null;
		conexao = adaptador.abrirConexao();
		String sql = "SELECT * FROM Psicologo WHERE matricula='"+matricula+"' and senha='"+senha+"'";
		try{
			st = conexao.createStatement();
			rs = st.executeQuery(sql);
			if(rs.next()){
				int codigo = rs.getInt("codigo");
				String nome = rs.getString("nome");
				String endereco = rs.getString("endereco");
				String cpf = rs.getString("cpf");
				psicologo = new Psicologo(codigo, nome, cpf, endereco, matricula, senha);
			}
		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			st.close();
			rs.close();
		}
		return psicologo;
	}

	public ArrayList<Psicologo> listar() throws SQLException {
		ArrayList<Psicologo> psicologos = new ArrayList<Psicologo>();
		conexao = adaptador.abrirConexao();
		String sql = "SELECT * FROM Psicologo";
		try{
			st = conexao.createStatement();
			rs = st.executeQuery(sql);
			while(rs.next()){
				String nome = rs.getString("nome");
				String endereco = rs.getString("endereco");
				String matricula = rs.getString("matricula");
				String cpf = rs.getString("cpf");
				int codigo = Integer.parseInt(rs.getString("codigo"));
				Psicologo now = new Psicologo();
				now.setNome(nome);
				now.setEndereco(endereco);
				now.setMatricula(matricula);
				now.setCpf(cpf);
				now.setCodigo(codigo);
				psicologos.add(now);
			}

		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			st.close();
			rs.close();
		}
		return psicologos;
	}

	public Psicologo getPsicologoPeloCodigo(int codigo) throws SQLException {
		Psicologo psicologo = null;

		conexao = adaptador.abrirConexao();
		String sql = "SELECT * FROM Psicologo WHERE codigo='"+codigo+"'";
		try{
			st = conexao.createStatement();
			rs = st.executeQuery(sql);
			rs.next();
			String nome = rs.getString("nome");
			String endereco = rs.getString("endereco");
			String matricula = rs.getString("matricula");
			String cpf = rs.getString("cpf");
			psicologo = new Psicologo();
			psicologo.setNome(nome);
			psicologo.setEndereco(endereco);
			psicologo.setMatricula(matricula);
			psicologo.setCpf(cpf);
			psicologo.setCodigo(codigo);
		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			st.close();
			rs.close();
		}

		return psicologo;
	}

	public void deletar(int codigo) throws SQLException{
		conexao = adaptador.abrirConexao();
		String sql = "DELETE FROM Psicologo WHERE codigo='"+codigo+"'";
		try{
			st = conexao.createStatement();
			st.executeUpdate(sql);
		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			st.close();
		}
	}

	public void atualizar(Psicologo psicologo) throws SQLException {
		conexao = adaptador.abrirConexao();
		String sql ="UPDATE psicologo "+
					"SET nome=?, cpf=?, endereco=?, matricula=? "+
					"WHERE codigo=?";
		PreparedStatement ps = conexao.prepareStatement(sql);
		try{
			ps.setString(1,psicologo.getNome());
			ps.setString(2, psicologo.getCpf());
			ps.setString(3,psicologo.getEndereco());
			ps.setString(4,psicologo.getMatricula());
			ps.setInt(5, psicologo.getCodigo());
			ps.executeUpdate();
		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			ps.close();
		}
	}

	public void inserir(Psicologo psicologo)throws SQLException {
		conexao = adaptador.abrirConexao();
		String sql = "INSERT INTO Psicologo(nome, cpf, endereco, matricula, senha) "+
					 "VALUES (?, ?, ?, ?, ?)";
		PreparedStatement ps =  conexao.prepareStatement(sql);
		try{
			ps.setString(1, psicologo.getNome());
			ps.setString(2, psicologo.getCpf());
			ps.setString(3, psicologo.getEndereco());
			ps.setString(4, psicologo.getMatricula());
			ps.setString(5, psicologo.getSenha());
			ps.execute();
		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			ps.close();
		}
	}

}
